﻿#ifndef ETAT_H
#define ETAT_H
/**
 \file etat.h
 \brief Template des changements d'état
 \author Baptiste Pirault et  Hugo Dubois
 \date 01/06/2012
 \version 1
 **/
#include "QString"

/*!
 \class etat<T>
 \brief La classe template etat permet stocker un changement d'état
    Utilisé pour sauvegarder un état via la methode save des piles réelles, rationnelles et complexes
  */
template <class T>
class etat{
public:
    //! \brief Constructeur
    //!
    //! Initialise action, n1, n2 et texte
    //! \param a : type d'action
    //! \param str : texte affiché dans l'afficheur
    //! \param n1 : premier opérande
    //! \param n2 : deuxième opérande (pour les fonctions à deux opérandes)
    etat(int a = 0,QString str = "",T nb1 = T(),T nb2 = T()):action(a),n1(nb1),n2(nb2),texte(str){}

    //! \brief action
    //! valeurs possibles :
    //! -1 : etat initial
    //!  0 : clique sur espace, c'est-à-dire empilement de n1
    //!  1 : clique sur opérateur unaire, c'est-à-dire dépilement, opération et empilement
    //!  2 : clique sur opérateur binaire, c'est-à-dire deux dépilement, opération et empilement
    //!  3 : clique sur =, c'est-à-dire ajout de texte dans l'afficheur
    int action;

    //! \brief n1
    //!
    T n1;

    //! \brief n2
    //!
    T n2;

    //! \brief texte
    //!
    QString texte;
};

#endif // ETAT_H
